/**
 * Description:
 * Class Name:TreeSetTest2
 * Date:2022/3/5 11:23
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第8章_Java集合._8_3_Set集合._8_3_3_TreeSet类;

import java.util.TreeSet;

class Z implements Comparable{
    int age;
    public Z(int age){
        this.age = age;
    }

    // 重写equals方法，让它总是返回true
    public boolean equals(Object o) {
        return true;
    }

    // 重写Comparable接口的compareTo方法，让它总是返回1
    public int compareTo(Object obj){
        return 1;
    }
}

public class TreeSetTest2 {
    public static void main(String[] args) {
        var set = new TreeSet();
        var z1 = new Z(6);
        set.add(z1);

        // 第二次添加同一个对象，输出true，表明添加成功——虽然它的equals总是返回true，但compareTo总是返回1，导致认为它不等
        System.out.println(set.add(z1));
        // 下面输出set集合，将看到2个元素
        System.out.println(set);
        // 修改set集合的第一个元素的age变量，因为TreeSet的first()方法是Object类型的，你得转换成需要的类型
        ((Z)(set.first())).age = 9;
//        Z a = (Z)(set.first());
        // 输出set集合的最后一个元素的age变量，将看到也变成了9
        System.out.println(((Z)(set.last())).age);
    }
}
//true
//[Z@4eec7777, Z@4eec7777]
//9